import {Modal, Message} from 'view-ui-plus'

/**
 * @param content 提示内容
 * @param title 提示标题
 * @param okText 确定按钮的文字
 * @param cancelText 取消按钮的文字
 * @param closable 是否可以按 Esc 键关闭
 * @param handlerCancel 是否处理取消逻辑, 默认不处理
 *
 * this.$tips.confirm("您确定要删除某个系统吗？").then(()=> {
 *      // 点击确定按钮后 执行的代码
 * })
 *
 */
function confirm(content, {title = '提示信息', okText = '确定', cancelText = '取消', closable = false, handlerCancel=false} = {}) {
    return new Promise((resolve, reject) => {
        Modal.confirm({
            title: title,
            content: content,
            onOk: resolve,
            onCancel: handlerCancel ?reject : function(){},
            okText,
            cancelText,
            closable
        })
    })
}

/**
 * 显示加载中效果
 * @param content 加载中提示内容
 *
 * this.$tips.loading("提示内容").then(close => {
 *     // close 是一个函数， 可以在适当的位置，进行关闭 loading
 *     close();
 * })
 */
function loading(content) {
    return new Promise((resolve)=> {
        // 返回一个能够关闭的函数
        let loadingClose = Message.loading({background: true, content, duration: 0});
        resolve(loadingClose);
    })
}

/**
 *  this.$tips.info("提示信息");
 *  this.$tips.success("提示信息");
 *  this.$tips.warning("提示信息");
 *  this.$tips.error("提示信息");
 *
 *  封装了 四种 请提示框
 *  @param content 提示内容
 *  @param duration 自动关闭的延时，单位秒，不关闭可以写 0
 */
const tooltipTypes = ["info", "success", "warning", "error"];
let tooltips = tooltipTypes.reduce((ret, tipType) => {
    ret[tipType] = function (content, {duration = 1.5} = {}) {
        Message[tipType]({background: true, content, duration})
    }
    return ret;
}, {})

export default {
    confirm,
    ...tooltips ,
    loading,
}